package com.github.coolcooldee.sloth.target; import java.math.BigDecimal; import java.sql.*; /** * Created by sloth on 16/6/16. */ public class JavaType { public static String getType(ResultSetMetaData rsmd, String columnName) throws SQLException { int count = rsmd.getColumnCount(); for (int i = 1; i <= count; i++) { String key = rsmd.getColumnName(i); if (!key.equals(columnName)) continue; return getType(rsmd, i); } return ""; } public static String getType(ResultSetMetaData rsmd, int i) throws SQLException { int count = rsmd.getColumnCount(); if (i > count) return ""; int columnType = rsmd.getColumnType(i); switch (columnType) { case java.sql.Types.ARRAY: return Array.class.getSimpleName(); case java.sql.Types.BIGINT: return Long.class.getSimpleName(); case java.sql.Types.BINARY: return "byte[]"; case java.sql.Types.BIT: return Boolean.class.getSimpleName(); case java.sql.Types.BLOB: return Blob.class.getName(); case java.sql.Types.BOOLEAN: return Boolean.class.getSimpleName(); case java.sql.Types.CHAR: return String.class.getSimpleName(); case java.sql.Types.CLOB: return Clob.class.getName(); case java.sql.Types.DATE: return java.util.Date.class.getName(); case java.sql.Types.DECIMAL: return BigDecimal.class.getName(); case java.sql.Types.DISTINCT: break; case java.sql.Types.DOUBLE: return Double.class.getSimpleName(); case java.sql.Types.FLOAT: return Float.class.getSimpleName(); case java.sql.Types.INTEGER: return Integer.class.getSimpleName(); case java.sql.Types.JAVA_OBJECT: return Object.class.getSimpleName(); case java.sql.Types.LONGVARCHAR: return String.class.getSimpleName(); case java.sql.Types.LONGNVARCHAR: return String.class.getSimpleName(); case java.sql.Types.LONGVARBINARY: return "byte[]"; case java.sql.Types.NCHAR: return String.class.getName(); case java.sql.Types.NCLOB: return NClob.class.getName(); case java.sql.Types.NULL: break; case java.sql.Types.NUMERIC: return BigDecimal.class.getName(); case java.sql.Types.NVARCHAR: return String.class.getSimpleName(); case java.sql.Types.OTHER: return Object.class.getSimpleName(); case java.sql.Types.REAL: return Double.class.getSimpleName(); case java.sql.Types.REF: break; case java.sql.Types.ROWID: return RowId.class.getName(); case java.sql.Types.SMALLINT: return Short.class.getSimpleName(); case java.sql.Types.SQLXML: return SQLXML.class.getName(); case java.sql.Types.STRUCT: break; case java.sql.Types.TIME: return Time.class.getName(); case java.sql.Types.TIMESTAMP: return java.util.Date.class.getName(); case java.sql.Types.TINYINT: return Byte.class.getSimpleName(); case java.sql.Types.VARBINARY: return "byte[]"; case java.sql.Types.VARCHAR: return String.class.getSimpleName(); default: break; } return ""; } public static String getBasicType(String type){ if (type.equals("Boolean")) type = "boolean"; if (type.equals("Byte") || type.equals("java.lang.Byte")) type = "byte"; else if (type.equals("Short") || type.equals("java.lang.Short")) type = "short"; else if (type.equals("Integer") || type.equals("java.lang.Integer")) type = "int"; else if (type.equals("Long") || type.equals("java.lang.Long")) type = "long"; else if (type.equals("Float") || type.equals("java.lang.Float")) type = "float"; else if (type.equals("Double") || type.equals("java.lang.Double")) type = "double"; return type; } }